/**
 * 注册
 * /user?act=reg&user=abc&pass=123
 * { "ok": flase, "msg": "原因" }
 * 登陆
 * /user?act=login&user=abc&pass=123
 * { "ok": flase, "msg": "原因" }
 */

const http = require('http')
const urllib = require('url')
const fs = require('fs')
const querystring = require('querystring')

let userslist = {}  // { "zhangsan": "12345678", "lisi": "1234" }

let server = http.createServer((req, res) => {
  let urlData = urllib.parse(req.url, true)
  const urlAdd = urlData.pathname
  const getData = urlData.query

  // 解析数据
  let tempData = ''
  req.on('data', (data) => {
    tempData += data
  })
  req.on('end', () => {
    const postData = querystring.parse(tempData)
  })

  // 区分访问类型：接口 || 文件
  if (urlAdd === '/user') {
    res.setHeader('Content-type', 'application/json') // 浏览器数据解析类型
    switch (getData.act) {
      case 'reg':
        // 校验是否被注册 && 记录新用户
        if (userslist[getData.user]) {
          res.write('{ "ok": false, "msg": "此用户已存在" }')
        } else {
          userslist[getData.user] = getData.pass
          res.write('{ "ok": true, "msg": "注册成功" }')
        }
        break
      case 'login':
        // 校验用户是否存在
        if (userslist[getData.user]) {
          // 校验密码
          if (userslist[getData.user] === getData.pass) {
            res.write('{ "ok": true, "msg": "登陆成功" }')
          } else {
            res.write('{ "ok": false, "msg": "用户名或密码有误" }')
          }
        } else {
          res.write('{ "ok": false, "msg": "此用户不存在" }')
        }
        break
      default:
        res.write('{ "ok": false, "msg": "未知的act" }')
    }
    console.log(userslist, '用户列表')
    res.end()
  } else {
    // 读取文件
    let filename = './www' + urlAdd
    fs.readFile(filename, (err, data) => {
      err ? res.write('404') : res.write(data)
      res.end()
    })
  }
})

server.listen(8080)
